In a digital communication system, noise in a transmission channel tends to corrupt bit streams of data being transmitted from a transmitter to a receiver. The impact of noise on a transmitted bit stream can be minimized by coding the bit stream with FEC techniques. One FEC technique currently used in digital communication systems is punctured convolutional coding.
Punctured convolutional coding techniques in digital communication systems are known in the prior art as shown by the teachings of the following prior art references which are incorporated herein by reference: U.S. Pat. No. 5,029,331, issued on Jul. 2, 1991, to Heichler et al.; U.S. Pat. No. 4,908,827, issued on Mar. 13, 1990, to Gates; U.S. Pat. No. 4,462,101, issued on Jul. 24, 1984, to Yasuda et al.; Punctured Convolutional Codes of Rate (n-1)/n and Simplified Maximum Likelihood Decoding, by J. Bibb Cain, George C. Clark, Jr., and John M. Geist, in IEEE Transactions on Information Theory, Vol. IT-25, No. 1, January 1979, pp. 97-100; and High Rate Punctured Convolutional Code for Soft Decision Viterbi Decoding, by Yutaka Yasuda, Kanshiro Kashiki, and Yasuo Hirata, in IEEE Transactions on Communications, Vol. COM-32, No. 3, March 1984, pp. 315-319.
In general, communication systems using punctured convolutional coding include a coder for coding a digital input to be transmitted from a transmitter and a decoder for decoding the coded input received at the receiver. The coder includes a convolutional coding circuit which receives the digital input and outputs a convolutional coded output. The digital input is coded by the convolutional coding circuit so that for every k-bits inputted into the convolutional coding circuit, a corresponding n-bits, where n&gt;k, is outputted. The k-bits inputted and the corresponding n-bits outputted are referred to as k-tuples and n-tuples, respectively. A convolutional coding rate for the convolutional coding circuit is defined as the ratio of the number of k-bits inputted to the number of n-bits outputted, and can be expressed as k/n. For example, the coding rate is 1/2 when for each bit inputted into the convolutional coding circuit there is a corresponding two bits outputted.
In order to increase the code rate of the coder, the convolutional coded output is passed through a puncturing circuit which includes a transmission mask circuit and deleting pattern memory for transmitting only selected bits of the convolutionally coded output. The puncturing circuit outputs a punctured output having a punctured code rate of z/q, where z=.gamma.k. A punctured code rate of z/q means that for every z input bits inputted into the convolutional coding circuit q bits are outputted from the puncturing circuit.
The desired punctured code rate is achieved by passing a convolutional coded output through the transmission mask circuit and puncturing the convolutional coded output on a block-by-block basis. Each block to be punctured is formed from a plurality of n-tuples and is referred to as a puncturing block. The number of n-tuples used to form each puncturing block is currently determined by recognizing that to provide a punctured code rate of z/q, where z=.gamma.k, for a convolutional coded output of rate k/n, at least .gamma. convolutionally coded n-tuples must be grouped and punctured as a puncturing block to achieve the desired punctured code rate. Accordingly, the bit length of each puncturing block is equal to .gamma. convolutionally coded n-tuples multiplied by the number of bits in each n-tuple. The bit length of the puncturing block can be expressed as L=.gamma.n.
The puncturing blocks are punctured according to a deleting pattern which has a length equal to that of a puncturing block. The bits of the deleting pattern have a one-to-one correspondence with the bits in each of the puncturing blocks. Accordingly, the deleting pattern is chosen to have a length that can be expressed as L=.gamma.n. The deleting pattern chosen has the minimum bit length necessary to achieve the desired punctured code rate of z/q for a convolutional coding rate of k/n.
The deleting pattern used by the puncturing circuit is an L-length block of ones and zeros, with each one representing a transmission bit and each zero representing a non-transmission bit. (The transmission bits and non-transmission bits are also referred to as non-deleting bits and deleting bits, respectively.) The ratio of ones to zeros in the L-length deleting pattern is chosen to achieve the desired punctured code rate. It is the ratio of ones to zeros in the deleting pattern that determines the punctured code rate.
For example, a 2/3 punctured rate is achieved for a rate 1/2 convolutional coding circuit by using a deleting pattern of length four (i.e., L=zn=2.times.2=4). The length four deleting pattern is chosen to have three transmission bits and one non-transmission bit so that the new punctured rate of 2/3 is achieved.
There are a plurality of different deleting patterns having the same ratio of ones to zeros and having the same bit length but having unique arrangements or patterns of ones and zeros. The arrangement or pattern of ones and zeros in a deleting pattern affects the distance properties of the punctured code. To minimize the bit error rate of the communication system, a deleting pattern having the desired bit length and ratio of ones to zeros is typically chosen in an attempt to optimize the distance properties of the punctured code.
To select an optimal deleting pattern once the length and ratio of ones to zeros is determined, a puncturing table of potential deleting patterns in which distance properties have been calculated for each deleting pattern can be consulted. Selecting an optimal deleting pattern for a given deleting pattern length and ratio of ones to zeros is well-known as indicated by the following incorporated references: Punctured Convolutional Codes of Rate (n-1)/n and Simplified Maximum Likelihood Decoding, by J. Bibb Cain, George C. Clark, Jr., and John M. Geist, in IEEE Transactions on Information Theory, Vol. IT-25, No. 1, January 1979, pp. 97-100; and High Rate Punctured Convolutional Code for Soft Decision Viterbi Decoding, by Yutaka Yasuda, Kanshiro Kashiki, and Yasuo Hirata, in IEEE Transactions on Communications, Vol. COM-32, No. 3, March 1984, pp. 315-319. The optimal deleting pattern selected from a puncturing table is used by the puncturing circuit in puncturing on a block-by-block basis the convolutional coded output.
A digital communication system having a punctured convolutional coding system and method that improves the distance properties of the punctured code and the associated bit error rate is needed. More particularly, the punctured convolutional coding system and method of such a digital communication system should utilize a more effective deleting pattern so as to achieve better distance properties for the punctured code and an improved bit error rate for the digital communication system.